package com.candoit.webapps.pricing.controllers;

import java.util.Iterator;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import com.candoit.webapps.pricing.model.TipoLinea;
import com.candoit.webapps.pricing.model.opcional.StampingMOPasadas;
import com.candoit.webapps.pricing.util.QueryUtil;

@ManagedBean(name = "abmtampingMOPasadasCtrl")
@RequestScoped
public class ABMStampingMOPasadasController extends AbstractController{

	/*TODO: persistir en algun lado*/
	private Double margenUtilidad = null;
	private List<StampingMOPasadas> stampings=null;
	
	public ABMStampingMOPasadasController(){
		margenUtilidad = 0.2;
		stampings = (List<StampingMOPasadas>) QueryUtil.getInstance().getOpcionales2(StampingMOPasadas.class ,margenUtilidad);
		stampings.add(new StampingMOPasadas());
	}
	
	public List<StampingMOPasadas> getStampings() {
		return stampings;
	}

	public void setStampings(List<StampingMOPasadas> stampings) {
		this.stampings = stampings;
	}
	
	public void guardarOpcionales(){
		Iterator<StampingMOPasadas> it = stampings.iterator();
		while(it.hasNext()){
			StampingMOPasadas stamping =it.next();
			
			if (stamping.getId() != null){
				this.update(stamping);
			}else{
				try {
					if (stamping.getPasadas()>0.0){
						/*Seteo el nombre porque esto no se hace desde la interfaz de usuario*/
						String nombre = "Pasadas "+ stamping.getPasadas();
						TipoLinea artesanal = QueryUtil.getInstance().getTipoLineaById(TipoLinea.ARTESANAL);
						stamping.setTipo(artesanal);
						stamping.setNombre(nombre);
						this.save(stamping);
					}
				} catch (NullPointerException npe) {	}
			}
		}
		stampings = (List<StampingMOPasadas>) QueryUtil.getInstance().getOpcionales2(StampingMOPasadas.class ,margenUtilidad);
		stampings.add(new StampingMOPasadas());
	}
	
	public void eliminar(StampingMOPasadas opcional){
		this.remove(opcional);
		Iterator<StampingMOPasadas> itops = stampings.iterator();
		while (itops.hasNext()){
			StampingMOPasadas aux = itops.next();
			if(aux.equals(opcional)){
				itops.remove();
			}
		}
	}

}
